एसक्यूएल तिथियाँ
तारीखों के साथ काम करते समय सबसे कठिन हिस्सा यह सुनिश्चित करना है कि जिस तारीख को आप डालने का प्रयास कर रहे हैं उसका प्रारूप डेटाबेस में दिनांक कॉलम के प्रारूप से मेल खाता है।
जब तक आपके डेटा में केवल दिनांक भाग शामिल है, आपकी क्वेरीज़ अपेक्षा के अनुरूप काम करेंगी। हालाँकि, जब कोई समय घटक शामिल होता है, तो यह अधिक जटिल हो जाता है।
महत्वपूर्ण नोट:
डेटाबेस सिस्टम और क्षेत्रीय सिस्टम के बीच दिनांक प्रारूप भिन्न-भिन्न होते हैं। हमेशा अपने विशिष्ट डेटाबेस के लिए दस्तावेज़ की जाँच करें।
SQL दिनांक डेटा प्रकार
MySQL दिनांक प्रकार
- DATE- प्रारूप YYYY-MM-DD
- DATETIME- प्रारूप: YYYY-MM-DD HH:MI:SS
- TIMESTAMP- प्रारूप: YYYY-MM-DD HH:MI:SS
- YEAR- प्रारूप YYYY या YY
SQL सर्वर दिनांक प्रकार
- DATE- प्रारूप YYYY-MM-DD
- DATETIME- प्रारूप: YYYY-MM-DD HH:MI:SS
- SMALLDATETIME- प्रारूप: YYYY-MM-DD HH:MI:SS
- TIMESTAMP- प्रारूप: एक अद्वितीय संख्या
नोट:
आपके डेटाबेस में एक नई तालिका बनाते समय एक कॉलम के लिए दिनांक प्रकार का चयन किया जाता है!
SQL दिनांकों के साथ कार्य कर रहा है
नीचे दी गई तालिका जांचें:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 2 | Camembert Pierrot | 2008-11-09 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
| 4 | Mascarpone Fabioli | 2008-10-29 |
अब हम उपरोक्त तालिका से ऑर्डरडेट "2008-11-11" वाले रिकॉर्ड का चयन करना चाहते हैं।
हम निम्नलिखित चयन कथन का उपयोग करते हैं:
तिथि के अनुसार चयन:
SELECT * FROM Orders
WHERE OrderDate='2008-11-11'
परिणाम-पैकेज इस तरह दिखेगा:
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 |
| 3 | Mozzarella di Giovanni | 2008-11-11 |
नोट:
यदि कोई समय घटक शामिल नहीं है तो दो तिथियों की तुलना आसानी से की जा सकती है!
समय घटक का उदाहरण
अब, मान लीजिए कि "ऑर्डर" तालिका इस तरह दिखती है ("ऑर्डरडेट" कॉलम में जोड़े गए समय तत्व पर ध्यान दें):
| OrderId | ProductName | OrderDate |
|---|---|---|
| 1 | Geitost | 2008-11-11 13:23:44 |
| 2 | Camembert Pierrot | 2008-11-09 15:45:21 |
| 3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
| 4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
यदि हम ऊपर बताए गए समान SELECT कथन का उपयोग करते हैं:
समय घटक के साथ खोजें:
SELECT * FROM Orders
WHERE OrderDate='2008-11-11'
हमें कोई परिणाम नहीं मिला! ऐसा इसलिए है क्योंकि क्वेरी केवल समय घटक के बिना दिनांकों की खोज करती है।
सहायता नोट:
अपने प्रश्नों को सरल और बनाए रखने में आसान रखने के लिए, अपनी तिथियों में समय तत्वों का उपयोग न करें जब तक कि आपको आवश्यकता न हो!
सामान्य दिनांक संचालन
वर्तमान तिथि
वर्तमान तिथि प्राप्त करें
-- MySQL
SELECT CURDATE();
-- SQL Server
SELECT GETDATE();
-- Oracle
SELECT SYSDATE FROM DUAL;
दिनांक जोड़ें
तारीखों में दिन जोड़ना
-- MySQL
SELECT DATE_ADD(OrderDate, INTERVAL 7 DAY)
FROM Orders;
-- SQL Server
SELECT DATEADD(day, 7, OrderDate)
FROM Orders;
तिथि अंतर
दो तिथियों के बीच का अंतर
-- MySQL
SELECT DATEDIFF('2023-12-31', '2023-01-01');
-- SQL Server
SELECT DATEDIFF(day, '2023-01-01', '2023-12-31');
तारिख का प्रारूप
MySQL दिनांक प्रारूप
-- विभिन्न आकार DATE_FORMAT(ऑर्डर दिनांक, '%Y-%m-%d') को स्वरूपित दिनांक के रूप में चुनें, DATE_FORMAT(आदेश दिनांक, '%d/%m/%Y') यूरोपीय दिनांक के रूप में, DATE_FORMAT(ऑर्डर दिनांक, '%M %d, %Y') लंबी तिथि के रूप में ऑर्डर से;
SQL सर्वर दिनांक स्वरूप
-- विभिन्न आकार ISOFormat के रूप में कन्वर्ट (VARCHAR, ऑर्डर दिनांक, 23) का चयन करें, कनवर्ट करें (वर्कर, ऑर्डर दिनांक, 103) ब्रिटिश प्रारूप के रूप में, प्रारूप (आदेश दिनांक, 'dddd, MMMM dd, yyyy') AS LongDate ऑर्डर से;
प्रक्रिया दिनांक संबंधी प्रश्न
दिनांक सीमा संबंधी प्रश्न
- पिछले 30 दिनों से ऑर्डर ऑर्डर में से * चुनें जहां ऑर्डर दिनांक >= DATE_SUB(CURDATE(), अंतराल 30 दिन); --निर्दिष्ट माह के आदेश ऑर्डर में से * चुनें जहां वर्ष (ऑर्डर दिनांक) = 2023 और महीना(ऑर्डर दिनांक) = 12;
दिनांक एकीकरण
- महीने के हिसाब से ऑर्डर वर्ष के रूप में वर्ष (ऑर्डर दिनांक) चुनें, माह(आदेश दिनांक) माह के रूप में, गिनती(*) आदेश गणना के रूप में आदेश से वर्ष के अनुसार समूह (ऑर्डर दिनांक), माह (ऑर्डर दिनांक) वर्ष, माह के अनुसार ऑर्डर करें;
दिनांक छँटाई
- सबसे पहले नवीनतम ऑर्डर ऑर्डर में से * चुनें ऑर्डर दिनांक DESC द्वारा ऑर्डर करें; -- सबसे पुराने ऑर्डर पहले ऑर्डर में से * चुनें ऑर्डरडेट एएससी द्वारा ऑर्डर;